home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 1.iso / ARGONET / PD / PROGRAMMING / DESKLIBC / SOURCES.ZIP / DeskLib / !DLSources / Libraries / Misc / c / Screen next >
Text File  |  1995-07-10  |  2KB  |  73 lines

  1. /*
  2.     ####             #    #     # #
  3.     #   #            #    #       #          The FreeWare C library for 
  4.     #   #  ##   ###  #  # #     # ###             RISC OS machines
  5.     #   # #  # #     # #  #     # #  #   ___________________________________
  6.     #   # ####  ###  ##   #     # #  #                                      
  7.     #   # #        # # #  #     # #  #    Please refer to the accompanying
  8.     ####   ### ####  #  # ##### # ###    documentation for conditions of use
  9.     ________________________________________________________________________
  10.  
  11.     File:    Screen.c
  12.     Author:  Copyright © 1992 Jason Williams
  13.     Version: 1.00 (23 Mar 1992)
  14.     Purpose: Screen functions (read size, eig factors, etc.)
  15. */
  16.  
  17. #include "DeskLib:Wimp.h"
  18. #include "DeskLib:SWI.h"
  19. #include "DeskLib:Screen.h"
  20.  
  21. /*
  22. JS 02 Apr 1995
  23. Support for DLLs
  24. */
  25.  
  26.  
  27. int        screen_mode  = -1;
  28. wimp_point screen_size;
  29. wimp_point screen_eig;
  30. wimp_point screen_delta;
  31. int        screen_bpp;
  32.  
  33. #ifdef _DLL
  34. int        *Screen__Ref_mode( void)    { return &screen_mode;    }
  35. wimp_point    *Screen__Ref_size( void)    { return &screen_size;    }
  36. wimp_point    *Screen__Ref_eig( void)        { return &screen_eig;    }
  37. wimp_point    *Screen__Ref_delta( void)    { return &screen_delta;    }
  38. int        *Screen__Ref_bpp( void)        { return &screen_bpp;    }
  39.  
  40. #endif
  41.  
  42.  
  43.  
  44. #define ReadModeVar(m, v, r) SWI(3, 3, 0x20035, (m), (v), 0,   0, 0, (r))
  45. #define SWI_XOS_Byte 0x20006
  46.  
  47. extern BOOL Screen_CacheModeInfo(void)
  48. {
  49.   int oldmode = screen_mode;
  50.  
  51.   SWI(1, 3, SWI_XOS_Byte, 135,   NULL, NULL, &screen_mode);
  52.  
  53.   if (oldmode == screen_mode)
  54.     return(FALSE);
  55.  
  56.   ReadModeVar(-1, 9, &screen_bpp);
  57.   screen_bpp = 1 << screen_bpp;
  58.  
  59.   ReadModeVar(-1, 4, &screen_eig.x);
  60.   ReadModeVar(-1, 5, &screen_eig.y);
  61.  
  62.   screen_delta.x = 1 << screen_eig.x;
  63.   screen_delta.y = 1 << screen_eig.y;
  64.  
  65.   ReadModeVar(-1, 11, &screen_size.x);
  66.   screen_size.x = (screen_size.x + 1) << screen_eig.x;
  67.  
  68.   ReadModeVar(-1, 12, &screen_size.y);
  69.   screen_size.y = (screen_size.y + 1) << screen_eig.y;
  70.  
  71.   return(TRUE);
  72. }
  73.